home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / System / Cursor Shake / Cursor Shake.c < prev    next >
C/C++ Source or Header  |  1992-08-10  |  1KB  |  74 lines

  1. /*****************************************/
  2. /* Cursor Shake 1.0                      */
  3. /* By Will Schenk                        */
  4. /* I can be reached at                   */
  5. /* schenkl@vax.cs.hscsyr.edu             */
  6. /* Public Domain                         */
  7. /* The mouse position routines are taken */
  8. /* From MacTutor.                        */
  9. /*****************************************/
  10.  
  11. #include <SetUpA4.h>
  12.  
  13. #define Trap    0xA9DA
  14.  
  15. long    oldTrapAdd;
  16. pascal void TEInitPatch( TEHandle h );
  17.  
  18. main()
  19. {
  20. Handle    h;
  21. Ptr        myPtr;
  22.  
  23.     asm {
  24.         move.l    A0, myPtr
  25.         }
  26.  
  27.     RememberA0();
  28.     SetUpA4();
  29.  
  30.     if(!Button()) {
  31.         h = RecoverHandle(myPtr);
  32.         DetachResource(h);
  33.         HLock( h );
  34.         oldTrapAdd = NGetTrapAddress(Trap,ToolTrap);
  35.         NSetTrapAddress(TEInitPatch,Trap,ToolTrap);
  36.         }
  37.     else
  38.         SysBeep( 30 );
  39.     RestoreA4();
  40. }
  41.  
  42. void MousePos(newPos)
  43. Point    newPos;
  44. {
  45.  
  46.     int        *MTemp;
  47.     char    *CrsrNew;
  48.     int        i;
  49.  
  50.     MTemp = (int *)  0x828;    /* Set up our globals... */
  51.     CrsrNew = (char *) 0x8CE;
  52.  
  53.     /* Points are stored as (row, column) or (v, h) in memory... */
  54.     /* Set our globals... */
  55.     for (i=0;i<3;i++) {
  56.         *(MTemp+2*i) = newPos.v;
  57.         *(MTemp+2*i+1) = newPos.h;
  58.     }
  59.  
  60.     *CrsrNew = -1;    /* There's a new position */
  61. }
  62.  
  63. pascal void TEInitPatch( TEHandle h )
  64. {
  65. Point    p;
  66. SetUpA4();
  67. GetMouse( &p );
  68. LocalToGlobal( &p );
  69. p.h += Random() % 2;
  70. p.v += Random() % 2;
  71. MousePos( p );
  72. CallPascal( h, oldTrapAdd );
  73. RestoreA4();
  74. }